package com.mmall.concurrency.example.singleton;

import com.mmall.concurrency.annoations.ThreadSafe;

/**
 * 饿汉模式
 * 单例的实例在类装载的时候被创建
 * 饿汉模式可能会造成资源浪费和类加载缓慢，要避免这两点需要这个类构造时没有那么复杂，还要保证这个对象一定会被使用
 */
@ThreadSafe
public class SingletonExample6 {

    // 私有的构造函数
    private SingletonExample6(){

    }

    // 单例对象 静态域定义一定要在下面静态代码块之前，否则这个null会覆盖下面的静态代码块中已经赋值的值
    private static SingletonExample6 instance = null;

    static {
        instance = new SingletonExample6();
    }


    // 静态的工厂方法
    public static SingletonExample6 getInstance(){
        return instance;
    }

    public static void main(String[] args) {
        System.out.println(getInstance().hashCode());
        System.out.println(getInstance().hashCode());
    }
}
